<?php

//在服务器端限制文件上传


//1、通过$_FILES文件上传变量接受上传文件信息

$fileInfo = $_FILES['myFile'];
$maxSize = 2097152;
$allowExt = array('jpeg','jpg','png','gif','bmp');
$flag=true;
//2、判断错误号，只有为0或者是UPLOAD_ERR)OK，没有错误发生，上传成功

if($fileInfo['error'] == UPLOAD_ERR_OK){
	//判断上传文件的大小
	if($fileInfo['size']>$maxSize){
		exit('上传文件过大');
	}

	//获取拓展名
	//$ext = strtolower(end(explode('.',$fileInfo['name'])));
	$ext = pathinfo($fileInfo['name'],PATHINFO_EXTENSION);
	//判断文件类型是否符合
	if(!in_array($ext,$allowExt)){
		exit('非法文件类型');
	}

	//判断文件是否通过HTTP  POST方式上传的
	if(!is_uploaded_file(($fileInfo['tmp_name']))){
		exit('文件不是通过HTTP POST方式上传的');
	}

	//检测是否为真实的图片类型
	if($flag){
		if(!getimagesize($fileInfo['tmp_name'])){
			exit('不是真正图片类型');
		}
	}

	$path='ache';
	//判断文件夹是否存在
	if(!file_exists($path)){
		mkdir($path,0777,true);
		chmod($path,0777);
	}

	//确保文件名唯一，防止重名产生覆盖
	$uniName = md5(uniqid(microtime(true),true)).'.'.$ext;
	$destination=$path.'/'.$uniName;
	//$destination=$path.'/'.$fileInfo['name'];
	if(move_uploaded_file($fileInfo['tmp_name'],$destination)){
		echo '文件上传成功！';
	}else{
		echo '文件上传失败';
	}
}else{
	switch ($fileInfo['error']) {
		case 1:
			echo '上传的文件超过了php.ini中upload_max_filesize选项限制的值';
			break;
		case 2:
			echo '上传文件的大小超过了HTML表单中max_file_size选项指定的值';
			break;
		case 3:
			echo '文件只有部分被上传';
			break;
		case 4:
			echo '没有文件被上传';
			break;
		case 6:
			echo '找不到临时文件夹';
			break;
		case 7:
			echo '文件写入失败';
			break;
		case 8:
			echo '上传的文件被PHP拓展程序中断';
			break;
	}
}

?>